iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Software Development

【30歲學Coding轉職心法】從0到1的C#軟體工程師之路系列 第 25

【30歲學Coding轉職心法】從0到1的C#軟體工程師之路-25.擅用開發工具學C#(4)Nuget套件

  • 分享至 

  • xImage
  •  

今天分享一個Visual Studio很實用的功能:Nuget 套件管理員

● Nuget是什麼?

https://learn.microsoft.com/zh-tw/nuget/what-is-nuget

簡言之,NuGet 套件就是副檔名為 .nupkg 的單一 ZIP 檔案,內含已編譯程式碼 (DLL)、其他與該程式碼相關的檔案,以及包含套件版本號碼這類資訊的描述性資訊清單。 擁有要共用之程式碼的開發人員會建立套件,並將它們發行至公用或私人主機。 套件取用者會從適當的主機取得那些套件、將它們新增至其專案,然後在其專案程式碼中呼叫套件的功能。 NuGet 本身接著會處理所有中間詳細資料。

看完上面官方描述可能還是很不好理解,我們可以想像Nuget提供了其他人開發好的軟體工具包,只要去上面下載回來就能使用。比如想要透過C#來產生Word、Excel檔案並填入設計好的文字內容,直接從0開始寫恐怕非常困難,但Nuget上有個「NPOI」的套件,開發者已經寫好相關的功能,下載此套件就可以快速產生Word與Excel內容!
https://ithelp.ithome.com.tw/upload/images/20230925/20160592crZK41l4FK.png

開啟Nuget套件管理員的方式,點選「工具」→「Nuget 套件管理員」→「管理方案的Nuget 套件」,如下圖:
https://ithelp.ithome.com.tw/upload/images/20230925/20160592itckTdcLaR.png

● 範例實作

如果有聽過Python這個程式語言的話,就算沒學過可能也會聽說適合用途在於AI相關或爬蟲資料。但是並不是只有Python才能寫爬蟲程式,C#也是可以的!
下面將示範利用「AngleSharp」套件,來抓取特定網站的資料內容:

  1. 打開Nuget套件管理員,搜尋「AngleSharp」套件並安裝
    https://ithelp.ithome.com.tw/upload/images/20230925/20160592LT5DRMcRO9.png

  2. 安裝過程會顯示於「輸出」視窗內,完成後最後一行會顯示「=== 已完成 ===」
    https://ithelp.ithome.com.tw/upload/images/20230925/20160592D3G91y9eEX.png

  3. 建立ConsoleApp專案,程式目的是提供一組關鍵字與來源網站,即可自動抓取有該關鍵字的文章標題。程式碼如下:

        static async Task Main(string[] args)
        {
            // 設定要爬取的網站網址
            var url = "https://ithelp.ithome.com.tw/search?search=nuget&tab=article";

            // 設定要爬取的關鍵字
            var keyword = "Nuget";

            // 建立 AngleSharp 的配置
            var config = Configuration.Default.WithDefaultLoader();

            // 使用 AngleSharp 連線到網站並取得文件
            var document = await BrowsingContext.New(config).OpenAsync(url);

            // 取得網站中所有文章的標題
            var titles = document.QuerySelectorAll(".qa-list__title a")
                .Where(a => a.TextContent.IndexOf(
                            keyword, StringComparison.OrdinalIgnoreCase) >= 0)
                .Select(a => a.TextContent);

            // 顯示搜尋結果
            Console.WriteLine($"以下是符合 \"{keyword}\" 關鍵字的文章標題:");
            Console.WriteLine();

            foreach (var title in titles)
            {
                Console.WriteLine(title);
            }

            Console.ReadLine();
        }

這段Code是將下面文字貼到ChatGPT上所產生的,可以透過此範例Code再去擴充/修改想要爬蟲的內容。
提供C# 使用AngleSharp套件來爬蟲網站取得資料顯示的範例,專案架構用ConsoleApp,網站來源為https://ithelp.ithome.com.tw/,爬取關鍵字為「Nuget」,取得文章標題即可。

執行結果如下:
https://ithelp.ithome.com.tw/upload/images/20230925/20160592ZSODkINMCd.png

透過以上範例,我們了解使用Nuget中的套件可以很簡單地做出我們想要的功能,如果再搭配ChatGPT甚至連程式碼都不用自己寫,只需要針對客製或複雜需求去修改關鍵程式碼,寫Code真的是愈來愈輕鬆呢!

那麼今天的分享就到這囉!


上一篇
【30歲學Coding轉職心法】從0到1的C#軟體工程師之路-24.擅用開發工具學C#(3)Code Snippet
下一篇
【30歲學Coding轉職心法】從0到1的C#軟體工程師之路-26.擅用開發工具學C#(5)快速分辨程式碼內容與實用快捷鍵
系列文
【30歲學Coding轉職心法】從0到1的C#軟體工程師之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言